
package Controlador;

import Modelo.Listas;
import Modelo.Vigilantes;
import Vista.JFrameVigilantes;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;

public class ControladorVigilantes implements ActionListener,KeyListener
{
   private JFrameVigilantes formVigilantes;
   private Listas LisVigi;
   private String ruta;

    public ControladorVigilantes(Listas LisVigilantes) 
    {
       formVigilantes=new JFrameVigilantes(); 
       formVigilantes.setVisible(true);
       formVigilantes.agregarListener(this);
       LisVigi=LisVigilantes;
       Enabled(false);
       
     //**********************************
      formVigilantes.getTxtCedulaVigilante().addKeyListener(new KeyAdapter()              
      {        
            @Override
            public void keyTyped (KeyEvent e)
              {    
                CedulaVigilantekeyTyped(e);  
              }
                 
            @Override
            public void keyPressed(KeyEvent e) 
               {
                  CedulaVigilantekeyPressed(e); 
               }   
       }
    );                      
       //**********************************
    }
   
   
//--------------------------------
private void CedulaVigilantekeyTyped(KeyEvent e)    
{
   String Cadena;
   char Caracter;
   
   Cadena=formVigilantes.getTxtCedulaVigilante().getText();
   
   if (Cadena.length()==8)
   {
     e.consume();
     return;
   }   
   
   Caracter=e.getKeyChar();
   if (Caracter<'0' || Caracter > '9')
     e.consume();  
   
}        
//--------------------------------
private void CedulaVigilantekeyPressed(KeyEvent e)
{
    String Cadena;
    int PosiVigi;
    Vigilantes vigi;
    int Opcion;
    
   Cadena=formVigilantes.getTxtCedulaVigilante().getText(); 
   if (e.getKeyChar()==10 && Cadena.length() > 0) 
    {
      Enabled(true);   
      
      PosiVigi=LisVigi.ExisteVigilante(Cadena);
      if (PosiVigi==-1)
       {
          formVigilantes.getTxtNombreVigilante().requestFocusInWindow();
          return;
       }  
      
      if (PosiVigi >=0)
       {
         vigi=LisVigi.getListaVigilantes().get(PosiVigi);

         formVigilantes.getTxtNombreVigilante().setText(vigi.getNombre());
         formVigilantes.getTxtDireccionVigilante().setText(vigi.getDireccion()); 
         formVigilantes.getTxtTelefonoVigilante().setText(vigi.getTelefono());
         
         Opcion=Mensajes.Opciones("Modificar", "Eliminar", "Salir");
         switch (Opcion)
          {
             case 0:formVigilantes.getTxtNombreVigilante().requestFocusInWindow();
                    break;
                 
             case 1:Mensajes.Aviso("No Implementado", "Aviso");    
                    Limpiar();
                    Enabled(false);
                    break;
                 
             case 2:Limpiar();
                    Enabled(false);
                    break;
   
          }   
         
       }  
    }  
} 

//--------------------------------
private void NombreVigilantekeyTyped(KeyEvent e)    
{
   String Cadena;
   char Caracter;
   
   Cadena=formVigilantes.getTxtNombreVigilante().getText();
   
   if (Cadena.length()==25)
   {
     e.consume();
     return;
   }   
   
   Caracter=e.getKeyChar();
   if (Caracter<'A' || Caracter > 'Z')
     e.consume();  
   
}
//--------------------------------
private void Limpiar()
{
    formVigilantes.getTxtCedulaVigilante().setText(""); 
    formVigilantes.getTxtNombreVigilante().setText("");
    formVigilantes.getTxtDireccionVigilante().setText(""); 
    formVigilantes.getTxtTelefonoVigilante().setText("");
}        
//--------------------------------
private void Enabled(boolean status)
{
    formVigilantes.getTxtCedulaVigilante().setEnabled(!status); 
    formVigilantes.getTxtNombreVigilante().setEnabled(status);
    formVigilantes.getTxtDireccionVigilante().setEnabled(status); 
    formVigilantes.getTxtTelefonoVigilante().setEnabled(status);    
}        
//--------------------------------
private void Grabar()
{
     String Cadena;
     Vigilantes vigi=new Vigilantes() ;
     
     Cadena=formVigilantes.getTxtCedulaVigilante().getText();
     if (Cadena.length()==0)
     {  
       Mensajes.Aviso("Cedula Vacia", "");  
       formVigilantes.getTxtCedulaVigilante().requestFocusInWindow();
       return;
     }  
     
     Cadena=formVigilantes.getTxtNombreVigilante().getText();
     if (Cadena.length()==0)
       {  
         Mensajes.Aviso("Nombre Vacio", "");  
         formVigilantes.getTxtNombreVigilante().requestFocusInWindow();
         return;
       }

      Cadena=formVigilantes.getTxtDireccionVigilante().getText();
      if (Cadena.length()==0)
       {  
         Mensajes.Aviso("Direccion Vacia ", "");  
         formVigilantes.getTxtDireccionVigilante().requestFocusInWindow();
         return;
       }

      Cadena=formVigilantes.getTxtTelefonoVigilante().getText();
      Cadena=Cadena.trim();
      
      if (Cadena.length()==0)
       {  
         Mensajes.Aviso("Telefono Vacio ", "");  
         formVigilantes.getTxtTelefonoVigilante().requestFocusInWindow();
         return;
       }
      
      Cadena=formVigilantes.getTxtCedulaVigilante().getText();
      
      vigi.Vigilantes(formVigilantes.getTxtCedulaVigilante().getText(), 
                      formVigilantes.getTxtNombreVigilante().getText(), 
                      formVigilantes.getTxtDireccionVigilante().getText(), 
                      formVigilantes.getTxtTelefonoVigilante().getText());
              
      

      Cadena=formVigilantes.getTxtCedulaVigilante().getText();

      int PosiVigi;
              
      PosiVigi =LisVigi.ExisteVigilante(Cadena);
      
      if (PosiVigi==-1)      
        LisVigi.getListaVigilantes().add(vigi);
      else
        LisVigi.getListaVigilantes().set(PosiVigi, vigi);
      
      Limpiar();
      Enabled(false);
      }      
//-------------------------------------

    @Override
    public void keyTyped(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void keyPressed(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void keyReleased(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

//--------------------------------------
  

    @Override
    public void actionPerformed(ActionEvent e) 
    {
       if (e.getSource().equals(formVigilantes.getBtnGrabar())) 
       {
          Grabar(); 
       } 

       if (e.getSource().equals(formVigilantes.getBtnSalir())) 
       {
          formVigilantes.dispose(); 
       } 

       if (e.getSource().equals(formVigilantes.getBtnConsultar())) 
       {
          new ControladorConsulVigilantes(LisVigi);  
       } 
       
        if (e.getSource().equals(formVigilantes.getBtnCancelar()))
       {
          Limpiar();
          Enabled(false);
          formVigilantes.getTxtCedulaVigilante().requestFocusInWindow();
       } 
       
    }    

}
